package br.com.bbcalibracao.util;

import javax.servlet.http.HttpSession;

public class Validador {
    public static final String SESSAO = "BBCalibracao";
    private static final int[] pesoCPF = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
    private static final int[] pesoCNPJ = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
    
    public static boolean validaSessao(HttpSession sessao){
        if (sessao != null && (String)sessao.getAttribute(SESSAO) != null
                && !((String)sessao.getAttribute(SESSAO)).trim().equals(""))
            return true;
        return false;
    }
    

    private static int calcularDigito(String str, int[] peso) {
	    int soma = 0;
	    for (int indice=str.length()-1, digito; indice >= 0; indice-- ) {
		    digito = Integer.parseInt(str.substring(indice,indice+1));
		    soma += digito*peso[peso.length-str.length()+indice];
	    }
	    soma = 11 - soma % 11;
	    return soma > 9 ? 0 : soma;
    }

    public static boolean validaCPF(String cpf) {
    	cpf = cpf.replaceAll("\\.", "").replaceAll("\\-", "").replaceAll("\\/", "");
	    if ((cpf==null) || (cpf.length()!=11)) return false;
	    Integer digito1 = calcularDigito(cpf.substring(0,9), pesoCPF);
	    Integer digito2 = calcularDigito(cpf.substring(0,9) + digito1, pesoCPF);
	    return cpf.equals(cpf.substring(0,9) + digito1.toString() + digito2.toString());
    }

    public static boolean validaCNPJ(String cnpj) {
    	cnpj = cnpj.replaceAll("\\.", "").replaceAll("\\-", "").replaceAll("\\/", "");
    	
	    if ((cnpj==null)||(cnpj.length()!=14)) return false;
	
	    Integer digito1 = calcularDigito(cnpj.substring(0,12), pesoCNPJ);
	    Integer digito2 = calcularDigito(cnpj.substring(0,12) + digito1, pesoCNPJ);
	    return cnpj.equals(cnpj.substring(0,12) + digito1.toString() + digito2.toString());
    }
}
